package com.itheima.threadpool_demo;

import java.util.concurrent.*;

/*
    线程池 :
        1 Java提供好的线程池
        2 自定义线程池

   ThreadPoolExecutor类 :
   public ThreadPoolExecutor(int corePoolSize,  // 核心线程数量            3
                          int maximumPoolSize,  // 池中允许的最大线程数    10
                          long keepAliveTime,   // 临时线程存活的时间      60
                          TimeUnit unit,        // 临时线程存活的时间单位   分
                          BlockingQueue<Runnable> workQueue,    // 阻塞队列  20
                          ThreadFactory threadFactory,          // 创建线程方式
                          RejectedExecutionHandler handler)     // 拒绝策略 , 四种

    饭馆 : 核心服务员3
    最多可以容纳10名服务员
 */
public class Test4 {
    int num = 10;
    public static void main(String[] args) {
        // ExecutorService threadPool2 = Executors.newFixedThreadPool(3);

        ThreadPoolExecutor threadPool = new ThreadPoolExecutor(
                3,
                10,
                60,
                TimeUnit.MINUTES,
                new ArrayBlockingQueue<>(20),
                Executors.defaultThreadFactory(),
                new ThreadPoolExecutor.AbortPolicy()
        );

        for (int i = 0; i < 100; i++) {
            threadPool.submit(new Runnable() {
                @Override
                public void run() {
                    System.out.println("自定义线程池执行的任务");
                }
            });
        }


    }
}
